"""
工厂模式

1.什么是工厂模式
将对象的创建由使用原生类本身创建，转换到由特定的工厂方法来创建

2.好处
 · 大批量创建对象的时候有统一的入口，易于代码维护
 · 当发生修改，仅修改工厂类的创建方法即可
 · 符合现实世界的模式，即由工厂来制作产品（对象）

"""


class Person:
    pass


# 定义员工类，继承于Person类
class Worker(Person):
    pass


# 定义Student类，继承于Person类
class Student(Person):
    pass


# 定义Teacher类，继承于Person类
class Teacher(Person):
    pass


class PersonFactory:
    """
    在引入工厂后，只需要修改工厂类中的逻辑即可
    """

    def get_person(self, p_type):
        if p_type == 'worker':
            return Worker()
        elif p_type == 'student':
            return Student()
        elif p_type == 'teacher':
            return Teacher()
        else:
            return None


pf = PersonFactory()
worker = pf.get_person("worker")
student = pf.get_person("student")
teacher = pf.get_person("teacher")

# 在未引入工厂时，需要手动创建，并且当类型增加时，需要修改多出代码，而在引入工厂后，只需要修改工厂类中的逻辑即可
# worker2 = Worker()
# worker3 = Worker()
# worker4 = Worker()
